package com.student.Activitys.activity;

import android.os.Bundle;
import android.os.Handler;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.student.Activitys.R;
import com.student.Activitys.activity.base.BaseActivity;
import com.student.Activitys.adapter.PartyMsgAdapter;
import com.student.Activitys.adapter.base.BaseRefreshAdapter;
import com.student.Activitys.bean.ImageTextBean;
import com.student.Activitys.bean.pack.ImageTextJsonPack;
import com.odd.Activitys.http.manager.SupportManager;
import com.student.Activitys.utils.Constant;
import com.student.Activitys.utils.JumperUtils;
import com.student.Activitys.utils.ToastUtils;

import org.simple.eventbus.Subscriber;
import org.simple.eventbus.ThreadMode;

import java.util.ArrayList;
import java.util.List;

import butterknife.Bind;

/**
 * 项目名称：智慧校园学生端
 * 类描述：团/党建信息 activity
 * 创建人：张飞祥
 * 创建时间：2017/10/26 9:02
 * 修改人：张飞祥
 * 修改时间：2017/10/26 9:02
 * 修改备注：
 */
public class PartyMsgActivity extends BaseActivity {

    @Bind(R.id.iv_return)
    ImageView ivReturn;
    @Bind(R.id.tv_title)
    TextView tvTitle;
    @Bind(R.id.rv_party_msg)
    RecyclerView rvPartyMsg;


    //初始化网络请求
    public SupportManager mApiManager;
    /**
     * 分页加载  所需变量
     */
    private int page = 1;              //当前页
    private int rows = 5;              //数据条目数
    //上拉加载 没有数据 page 是否 +1
    private boolean supportPageFlag = true;
    //上拉加载 是否滑动到底部 重复了加载
    private boolean partyMsgFalg = true;
    //奖惩资助列表 适配器
    private PartyMsgAdapter adapter;
    //奖惩资助列表 List集合
    private List<ImageTextBean> partyMsgList = null;

    @Override
    protected void initUI() {
        setContentView(R.layout.act_party_msg);
        //网络请求 常驻方法
        mApiManager = mApiManager.getSupportApiManager(PartyMsgActivity.this, PartyMsgActivity.this.getTaskId());
        //list 集合初始化
        partyMsgList = new ArrayList<>();
    }

    @Override
    protected void initData() {
        //初始化请求
        initHttp();
        //上拉加载事件
        initLoadMoreListener();

        //设置标题
        tvTitle.setText("团/党建信息");
        //显示返回按钮
        ivReturn.setVisibility(View.VISIBLE);
        /**
         * 返回按钮监听
         */
        ivReturn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }

    @Override
    protected void getNotData() {

    }


    /**
     * 初始化网络请求
     */
    private void initHttp() {
        //设置首次加载 标记
        mApiManager.getType(Constant.FIRST_LOAD);
        //显示 加载dialog
        initShowTimeDialog("正在加载本页面数据，请稍后...",PartyMsgActivity.this);
        //获取奖惩列表 网络请求
        mApiManager.supportList(Constant.HTTP_PARTY_MSG_ACTION,xh, page , rows );
    }

    /**
     * 思政 团·党建信息 列表 数据 网络请求 加载是否成功
     */
    @Subscriber(tag = Constant.BUS_SUPPORT_LIST_ON_COMPLETED, mode = ThreadMode.MAIN)
    public void initSupportOnCompleted(String str) {
        //销毁handler
        time_handler.removeCallbacks(time_runnable);
        timeDailog.dismiss();
        dialog.dismiss();
    }
    /**
     * 思政 团·党建信息 列表 数据 首次 网络请求 返回具体 数据实体
     */
    @Subscriber(tag = Constant.BUS_SUPPORT_LIST_NOTICE, mode = ThreadMode.MAIN)
    public void partyMsgList(final ImageTextJsonPack pack) {

        //填充列表集合数据
        partyMsgList.addAll(pack.getDataList());
        //填充列表数据
        adapter = new PartyMsgAdapter(PartyMsgActivity.this, pack.getDataList());
        rvPartyMsg.setLayoutManager(new LinearLayoutManager(PartyMsgActivity.this, LinearLayoutManager.VERTICAL, false));
        rvPartyMsg.setAdapter(adapter);
        //奖惩资助点击事件
        initItemClick();
    }

    /**
     * 思政 团·党建信息 列表 网络请求 上拉加载数据
     */
    @Subscriber(tag = Constant.BUS_SUPPORT_LIST_FOOT_NOTICE)
    public void FooterAddress(ImageTextJsonPack pack) {
        final List<ImageTextBean> footList = pack.getDataList();

        //开启延时操作
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                /**
                 * 判断是否有数据
                 * 当 返回列表 数据 size 0 没有更多数据可加载了
                 */
                if (footList.size()==0) {
                    //page 不允许 + 1
                    supportPageFlag = false;
                    //更改 文字 底部状态
                    adapter.changeMoreStatus(Constant.NO_LOAD_MORE);
                    ToastUtils.showShort(PartyMsgActivity.this, "没有更多数据了");
                } else {
                    //page 允许 + 1
                    supportPageFlag = true;
                    //填充上拉加载新的列表集合数据
                    partyMsgList.addAll(footList);
                    if (adapter!=null){
                        //加载到adapter里面
                        adapter.addFooterItem(footList);
                    }
                    //设置回到上拉加载更多
                    adapter.changeMoreStatus(Constant.PULLUP_LOAD_MORE);
                    ToastUtils.showShort(PartyMsgActivity.this, "更新了 " + footList.size() + " 条目数据");
                }
                //设置可以加载 为 “是”
                partyMsgFalg = true;
            }
        }, 1000);
    }

    /**
     * 思政 团·党建信息 点击事件
     */
    private void initItemClick() {
        if (adapter!=null){
            adapter.setOnItemClickListener(new BaseRefreshAdapter.OnRecyclerViewItemClickListener() {
                @Override
                public void onItemClick(View view, int position) {
                    /**
                     * 跳转 webView事件
                     */
                    Bundle bundle = new Bundle();
                    bundle.putString(Constant.WEB_METHOD, Constant.WEB_PARTY_MSG);                  //团·党建信息 方法名拼接字段
                    bundle.putString(Constant.WEB_ID, partyMsgList.get(position).getId() + "");     //当前校内动态 id
                    bundle.putString(Constant.WEB_TITLE, "团/党建信息");                             //设置web页面标题
                    JumperUtils.JumpTo(PartyMsgActivity.this, WebDateActivity.class, bundle);       //跳转到下一页面
                }
            });
        }
    }

    /**
     * 上拉加载数据
     */
    private void initLoadMoreListener() {
        rvPartyMsg.setOnScrollListener(new RecyclerView.OnScrollListener() {
            int lastVisibleItem;
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                //判断RecyclerView的状态 是空闲时，同时，是最后一个可见的ITEM时才加载
                if (newState == RecyclerView.SCROLL_STATE_IDLE && partyMsgFalg && adapter!=null) {
                    //设置可以加载 为 “否”
                    partyMsgFalg = false;
                    //设置正在加载更多
                    adapter.changeMoreStatus(Constant.LOADING_MORE);
                    //设置 加载数据类型（上拉加载）
                    mApiManager.getType(Constant.PULLUP_LOAD_MORE);
                    //如果 为 true 可以 查看下一页
                    if (supportPageFlag){
                        //数据请求
                        page = page + 1;
                    }
                    mApiManager.supportList(Constant.HTTP_PARTY_MSG_ACTION,xh, page , rows );
                }
            }
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
                //最后一个可见的ITEM
                lastVisibleItem = layoutManager.findLastVisibleItemPosition();
            }
        });
    }
}
